One important task in application program development is to troubleshoot and debug problems and/or errors in application programs. In general, it is not always easy to troubleshoot problems in application programs, especially in application programs that are deployed in a large networked system, where multiple machines execute at least a portion of the application programs. For example, in a client server environment, one part of an application program may be executed on a server while another part of the application program may be executed on a client. In some cases, even though an entire application program is executed on one machine, the machine may have to interact with another application program being executed on another machine coupled to the machine.
Conventional debugging tools typically allow developers to evaluate execution of an application program in relation to a particular subsystem of a machine. For example, one conventional debugging tool may generate a log of events occurred in an operating system (OS) of a machine during execution of an application program. However, conventional debugging tools typically do not track the interaction between various subsystems of a machine. Furthermore, many conventional debugging tools fail to provide any information on or insight into the effect and/or impact of the execution of the application program on other subsystems within the machine, let alone the effect and/or impact of the execution of the application program on other machines that interact with the machine executing the application program. As a result, it is difficult to determine a root cause of a problem using such debugging tools because of the limited information provided.
Although developers may use multiple debugging tools to collect information from different subsystems, or even from different machines, the developers have to manually sieve through the information collected in order to analyze the information. To further complicate the task, some of the conventional debugging tools may generate different types of information in multiple formats, thus making the job of analyzing the information from different debugging tools more difficult.